package com.qf.md.type.service.impl;

import com.qf.entity.md.type.MdItemType;
import com.qf.exception.CustomerException;
import com.qf.md.type.dao.MdItemTypeDAO;
import com.qf.md.type.param.TypeParam;
import com.qf.md.type.service.MdItemTypeService;
import com.qf.md.type.vo.MdItemTypeVO;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class MdItemTypeServiceImpl implements MdItemTypeService {

    @Resource
    private MdItemTypeDAO mdItemTypeDAO;
    @Override
    public List<MdItemTypeVO> findTypeVO() {
        return mdItemTypeDAO.selectTypeVO();
    }

    @Override
    public void deleteById(Long id) {
        //正常逻辑直接删除，但是要考虑删除的id是否为父级id，如果是父级id，则需要判断子级id是否为空，不为空则不能删除
        //通过删除的当前的id 作为一个字段parent_type_id 查询子级id，如果子级id不为空，则不能删除
        List<MdItemType> mdItemTypes = mdItemTypeDAO.SelectByParentTypeId(id);
        if (mdItemTypes.size()>0&&mdItemTypes!=null){
            //说明有子级id，不能删除
            throw new CustomerException("5003","当前类型存在子级类型，不能删除,请先删除子类数据");
        }else {
            //说明没有子级id，可以删除
            mdItemTypeDAO.deleteById(id);
        }


    }

    @Override
    public MdItemType typeInfo(long id) {
        MdItemType mdItemType = mdItemTypeDAO.selectById(id);
        return mdItemType;
    }

    @Override
    public void save(TypeParam typeParam) {
        System.out.println(typeParam.getAncestors());
        //前端传过来一个对象 现在只需要处理一个字段ancestor
        //开始设置ancestor字段的值
        //查询父级信息 的ancestors字段的值 拼接自己的父类的id给的 自己的ancestors字段
        MdItemType mdItemType = mdItemTypeDAO.selectById(typeParam.getParentTypeId());
        String ancestors = mdItemType.getAncestors();
        typeParam.setAncestors(ancestors+","+typeParam.getParentTypeId());
        System.out.println(typeParam);//ancestors现在已经有值了
        mdItemTypeDAO.insertType(typeParam);
    }
}
